package Algorithm.LICode;

import java.util.*;

/*
 * @author 枫城
 * @createTime 2022/8/23 21:54
 * @desc 返回最长的没有重复字长的长度
 *  思路： 使用滑动窗口来做
 */
public class TheMaxLongString {
    public static void main(String[] args) {
        String s = "abcabcbb";
        System.out.println(lengthOfLongestSubstring(s));
    }
    public static int lengthOfLongestSubstring(String s) {
        // 最长信息
        int max = 0;
        // 利用滑动窗口解决 key 用来存储字符， value 用来存储位置信息
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0, start =0;i <s.length(); i++) {
            char getChar = s.charAt(i);
            if (map.containsKey(getChar)){
                System.out.println(map.get(getChar));
                start = Math.max(map.get(getChar), start);
            }
            max = Math.max(max, i -start+1);
            map.put(s.charAt(i), i+1);
        }
        return max;
    }
}
